package com.boarsoft.boar.sequence.biz;

/**
 * 序列号码表的DAO
 * 
 * @author Mac_J
 *
 */
public interface SeqNumberBiz {

	/**
	 * 从数据库装载回收号<br>
	 * 每个实例启动时先到序列服务查询序列分片的“时间锁”（序列分片锁表）<br>
	 * 此“时间锁”记录了上一次扫描过期序号的时间（计为时间一）<br>
	 * 如果当前时间（计为时间二）与时间一相差超过30分钟，则以乐观锁方式更新时间锁为时间二。<br>
	 * 如果更新成功，则到数据库中更新时间三（时间二减30分钟）之前的所有序号的修改时间为时间二。<br>
	 * 注：序号的过期时间为30分钟（已登记超过30分钟），而队列与表的大小取决于TPS，不会太大<br>
	 * 
	 * @param catalog
	 * @param code
	 * @param tag
	 */
	void reload(String catalog, String code, String tag);

	/**
	 * 删除被取走的号
	 * 
	 * @param catalog
	 * @param code
	 * @param number
	 */
	void delete(String catalog, String code, Long number);

	/**
	 * 将此号码写入回收号码表
	 * 
	 * @param catalog
	 * @param code
	 * @param no
	 * @param tag
	 */
	void save(String catalog, String code, long no, String tag);

}
